# nonlocal
a = 10  # 全局变量
def funa():
    a = 1  # 局部变量
    def funb():  # funb的父级是funa
        # 修改父级函数的局部变量
        nonlocal a
        a = 2
        print(f"这是funb里面的a：{a}")  # 2
    funb()
    print(f"这是funa里面的a：{a}")  # 1 --》2

funa()
print(f"这是外面的a：{a}")  # 10

# nonlocal只能在函数里面去使用(函数嵌套)
# nonlocal也是一层一层往上面找，但是他不会去最外层的函数外面去找(只会在函数里面找，找不到会报错)
# 如果在上一层找到了变量就使用这个变量不会继续往上面找(就近原则)
# SyntaxError: no binding for nonlocal 'a' found
